﻿#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <locale>
#include <sstream>
#include <windows.h>


bool isCyrillicUppercase(char c) {
    return std::isupper(c, std::locale("ru_RU.UTF-8"));
}

std::string analyzeWords(std::string input_str) {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    if (input_str.find(' ') == std::string::npos) {
        return "Мало данных для анализа";
    }

    std::istringstream iss(input_str);
    std::vector<std::string> words;
    std::string word;

    while (iss >> word) {
        words.push_back(word);
    }

    int num_of_words = words.size();
    int num_uppercase_cyrillic = 0;
    int num_latin_chars = 0;
    int num_short_words = 0;
    std::string longest_word;
    int length_longest_word = 0;
    int num_hyphen_words = 0;

    for (const std::string& w : words) {
        if (isCyrillicUppercase(w[0])) {
            num_uppercase_cyrillic++;
        }
        if (std::any_of(w.begin(), w.end(), [](char c) { return isalnum(c) && c < 128; })) {
            num_latin_chars++;
        }
        if (w.length() <= 3) {
            num_short_words++;
        }
        if (w.length() > length_longest_word) {
            longest_word = w;
            length_longest_word = w.length();
        }
        if (w.find('-') != std::string::npos) {
            num_hyphen_words++;
        }
    }

    std::ostringstream oss;
    oss << "Кол-во слов: " << num_of_words << "\n"
        << "Кол-во слов с заглавной кириллической буквы: " << num_uppercase_cyrillic << "\n"
        << "Кол-во слов содержащих латинский символ: " << num_latin_chars << "\n"
        << "Кол-во слов не превышающих 3 символа: " << num_short_words << "\n"
        << "Кол-во слов в составе которых имеется дефис: " << num_hyphen_words << "\n"
        << "Самое длинное слово: " << longest_word << "\n"
        << "Длина слова: " << length_longest_word;

    return oss.str();
}

int main() {
    SetConsoleCP(1251); 
    SetConsoleOutputCP(1251); 

  
    setlocale(LC_ALL, ".1251");
    std::string input_string;
    std::cout << "Введите строку:";
    std::getline(std::cin, input_string);

    std::string result = analyzeWords(input_string);
    std::cout << result << std::endl;

    return 0;
}
